﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;
using produccion.reportes;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FRMrImpEnt.xaml
    /// </summary>
    public partial class FRMrImpEnt : Window
    {
        public FRMrImpEnt()
        {
            InitializeComponent();
        }

        private void butIm_Click(object sender, RoutedEventArgs e)
        {
            rImpEnt.imprimir();
        }
        private void butLim_Click(object sender, RoutedEventArgs e)
        {
            rImpEnt.limpiar();
        }

        private void border1_Loaded(object sender, RoutedEventArgs e)
        {
            Keyboard.Focus(texEnt);
        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
            }

            if (e.Key == Key.F4 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta1 == true) { MDOgeneral.logBusquedadAbierta1 = false; }
            }

            if (e.Key == Key.F5 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta2 == true) { MDOgeneral.logBusquedadAbierta2 = false; }
            }
        }
    }

    public class rImpEnt:ObservableObject 
    {
        public rImpEnt()
        {
            MDOgeneral.conectar();
            strTituloVentana = "Reimprimir entradas - Usuario: " + MDOgeneral.usuario + " - [FRMImpEnt]";
        }

        private string _strTituloVentana;
        public string strTituloVentana
        {
            get { return _strTituloVentana; }
            set { _strTituloVentana = value; RaisePropertyChangedEvent("strTituloVentana"); }
        }

        private string _tipo="N";
        public string tipo 
        {
            get { return _tipo; }
            set 
            {
                _tipo = value;
                if (!String.IsNullOrEmpty(_tipo))
                {
                    consultar();
                }
                RaisePropertyChangedEvent("tipo");
            }
        }
        
        private string _nrohoja;
        public string nrohoja 
        {
            get { return _nrohoja; }
            set 
            { 
                _nrohoja = value;
                if(!String.IsNullOrEmpty(_nrohoja))
                {
                    consultar();
                }
                RaisePropertyChangedEvent("nrohoja");
            }
        }

        private string _almacen;
        public string almacen 
        {
            get { return _almacen;}
            set { _almacen = value; RaisePropertyChangedEvent("almacen"); }
        }
        
        private DateTime _fecha=DateTime.Today;
        public DateTime fecha 
        {
            get {return _fecha;}
            set { _fecha = value; RaisePropertyChangedEvent("fecha"); }
        }

        private string _proveedor;
        public string proveedor 
        {
            get { return _proveedor; }
            set { _proveedor = value; RaisePropertyChangedEvent("proveedor"); }
        }

        private string _docref;
        public string docref 
        {
            get { return _docref; }
            set { _docref = value; RaisePropertyChangedEvent("docref"); }
        }

        public void limpiar() 
        {
            try
            {
                tipo = "N";
                nrohoja = "";
                almacen = "";
                fecha = DateTime.Today;
                proveedor = "";
                docref = "";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public void consultar() 
        {
            try 
            {
                clases.CLSENCENT ent = new clases.CLSENCENT {TIPENT_EEN=tipo,HOJNRO_EEN=nrohoja};
                ent.consultar();
                if (ent.EXISTE) 
                { 
                    clases.CLSMAEALM alm = new clases.CLSMAEALM {CODALM_ALM=ent.CODALM_EEN};
                    alm.consultar();
                    almacen = alm.NOMALM_ALM;
                    fecha = ent.FECENT_EEN;
                    clases.CLSMAEPRVP prv = new clases.CLSMAEPRVP { CODPRV_PRV = ent.CODPRV_EEN };
                    prv.consultar();
                    proveedor = prv.NOMPRV_PRV;
                    docref = ent.DOCREF_EEN;
                    dtEncEnt=new DataTable("ENCENT");
                    dtEncEnt.Columns.Add("TIPO");
                    dtEncEnt.Columns.Add("NUMERO");
                    dtEncEnt.Columns.Add("FECHA");
                    dtEncEnt.Columns.Add("DOCREF");
                    dtEncEnt.Columns.Add("PROVEEDOR");
                    dtEncEnt.Columns.Add("ORDPRO");
                    dtEncEnt.Columns.Add("CONCEPTO");
                    dtEncEnt.Columns.Add("STREMPRESA");
                    
                    DataRow r = dtEncEnt.NewRow();
                    switch (tipo)
                    {
                        case "N" :
                            r["TIPO"] = "NORMAL";
                            break;
                        case "D":
                            r["TIPO"] = "DEVOLUCION";
                            break;
                        case "A":
                            r["TIPO"] = "AJUSTE";
                            break;
                        case "M":
                            r["TIPO"] = "MUESTRA";
                            break;
                        case "O":
                            r["TIPO"] = "OTROS";
                            break;
                        default:
                            r["TIPO"] = "NORMAL";
                            break;
                    }
                    r["NUMERO"]=ent.HOJNRO_EEN;
                    r["FECHA"]=ent.FECENT_EEN.ToShortDateString();
                    r["DOCREF"]=ent.DOCREF_EEN;
                    r["PROVEEDOR"]=prv.NOMPRV_PRV;
                    r["CONCEPTO"] = ent.CONCEP_EEN;
                    r["ORDPRO"] = "Reemplazar";
                    r["STREMPRESA"] = MDOgeneral.strEmpresaImprime;

                    dtEncEnt.Rows.Add(r);
                    clases.CLSDETENT det = new clases.CLSDETENT {HOJNRO_DEN=nrohoja,TIPENT_DEN=tipo};
                    dtDetEnt=det.consRImpEnt();
                    dtDetEnt.TableName = "DETENT";
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public DataTable dtEncEnt=new DataTable();
        public DataTable dtDetEnt = new DataTable();

        public void imprimir() 
        {
            try 
            {
                DataSet ds = new DataSet("dsRentMatPri");
                ds.Tables.Add(dtEncEnt.Copy());
                ds.Tables.Add(dtDetEnt.Copy());
                Vista vista = new Vista { ds = ds, reporte = @"reportes\repRentMatPri.rpt" };
                vista.Show();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public void imprimirDirecto()
        {
            try
            {
                clases.CLSENCENT ent = new clases.CLSENCENT {TIPENT_EEN=tipo,HOJNRO_EEN=nrohoja};
                ent.consultar();
                if (ent.EXISTE)
                {
                    clases.CLSMAEALM alm = new clases.CLSMAEALM { CODALM_ALM = ent.CODALM_EEN };
                    alm.consultar();
                    almacen = alm.NOMALM_ALM;
                    fecha = ent.FECENT_EEN;
                    clases.CLSMAEPRVP prv = new clases.CLSMAEPRVP { CODPRV_PRV = ent.CODPRV_EEN };
                    prv.consultar();
                    proveedor = prv.NOMPRV_PRV;
                    docref = ent.DOCREF_EEN;
                    dtEncEnt = new DataTable("ENCENT");
                    dtEncEnt.TableName = "ENCENT";
                    dtEncEnt.Columns.Add("TIPO");
                    dtEncEnt.Columns.Add("NUMERO");
                    dtEncEnt.Columns.Add("FECHA");
                    dtEncEnt.Columns.Add("DOCREF");
                    dtEncEnt.Columns.Add("PROVEEDOR");
                    dtEncEnt.Columns.Add("ORDPRO");
                    dtEncEnt.Columns.Add("CONCEPTO");
                    dtEncEnt.Columns.Add("STREMPRESA");

                    DataRow r = dtEncEnt.NewRow();
                    switch (tipo)
                    {
                        case "N":
                            r["TIPO"] = "NORMAL";
                            break;
                        case "D":
                            r["TIPO"] = "DEVOLUCION";
                            break;
                        case "A":
                            r["TIPO"] = "AJUSTE";
                            break;
                        case "M":
                            r["TIPO"] = "MUESTRA";
                            break;
                        case "O":
                            r["TIPO"] = "OTROS";
                            break;
                        default:
                            r["TIPO"] = "NORMAL";
                            break;
                    }
                    r["NUMERO"] = ent.HOJNRO_EEN;
                    r["FECHA"] = ent.FECENT_EEN.ToShortDateString();
                    r["DOCREF"] = ent.DOCREF_EEN;
                    r["PROVEEDOR"] = prv.NOMPRV_PRV;
                    r["CONCEPTO"] = ent.CONCEP_EEN;
                    r["ORDPRO"] = "Reemplazar";
                    r["STREMPRESA"] = MDOgeneral.strEmpresaImprime;
                    dtEncEnt.Rows.Add(r);

                    clases.CLSDETENT det = new clases.CLSDETENT { HOJNRO_DEN = nrohoja, TIPENT_DEN = tipo };
                    dtDetEnt.Clear();
                    dtDetEnt = det.consRImpEnt();
                    dtDetEnt.TableName = "DETENT";

                    DataSet ds = new DataSet("dsRentMatPri");
                    ds.Tables.Add(dtEncEnt.Copy());
                    ds.Tables.Add(dtDetEnt.Copy());
                    Vista vista = new Vista { ds = ds, reporte = @"reportes\repRentMatPri.rpt" };
                    vista.Show();
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
    
    }

}
